A network typically comprises a plurality of nodes which can communicate with each other, such that each node in the network is capable of communicating with at least one other node in the network. The network may be for example the internet, but other networks may be used alternatively or additionally. Nodes can communicate in the network using links that may be direct links between the nodes, or alternatively the links may be indirect links through the network, such that the nodes communicate with each other via at least one other node in the network.
The network may employ a packet-based communication system. Packet-based communication systems allow the user of a device, such as a personal computer, to communicate across the network. One type of packet-based communication system uses a peer-to-peer (“P2P”) topology built on proprietary protocols. To enable access to a peer-to-peer system, the user must execute P2P client software provided by a P2P software provider on their computer, and register with the P2P system. When the user registers with the P2P system the client software is provided with a digital certificate from a server. Once the client software has been provided with the certificate, communication can subsequently be set up and routed between users of the P2P system without the further use of a server. In particular, the users can establish their own communication routes through the P2P system based on the exchange of one or more digital certificates (or user identity certificates, “UIC”), which enable access to the P2P system. The exchange of the digital certificates between users provides proof of the users' identities and that they are suitably authorised and authenticated in the P2P system to engage in communication. Further details on such a P2P system are disclosed in WO 2005/009019.
A first node in the network may store details of contacts of a first user of the first node. The first node, or the first user, may be interested in determining whether any of the first user's contacts are also contacts of a second user at a second node in the network. One method for determining if there are any common contacts between the first and second users is for the first node to send a list of the first user's contacts to the second node. The second node can then compare the first and second user's contacts to find common contacts and can return the results to the first node.
In another scenario, a social networking site in the network may be used to find users in the network who share common interests. The users can transmit identifiers of their interests to a node of the social networking site, so that the social networking site can compare the interests of different users to identify users with common interests. A recommendation may then be sent to at least one of the identified users to indicate that the identified users share common interests.
In a further scenario in which the network is a file sharing network, some nodes in the network are file sharing nodes, whereby files stored at the file sharing nodes can be retrieved by other nodes in the network. Each file sharing node sends identifiers, such as filenames, of files stored at the sharing node to a central index node. A user wanting to find a desired file in the file sharing network can send a request to the central index node identifying the desired file. The central index node can compare the request with the identifiers received from the sharing nodes to find any matches. If the central index node determines that the desired file is stored on a sharing node then the central index node can inform the user searching for the desired file of the location of the sharing node in the network. The user can then contact the sharing node to request the desired file.
The inventor has appreciated that there are two common problems with the separate scenarios described above. Firstly, the transmission of the contact details, the identifiers of interests or the identifiers of files over the network requires a large amount of data to be transmitted across the network. This reduces the network resources that are available for other purposes. Secondly, there may be a security or privacy problem in the scenarios described above. For example, a first user might not want to reveal his contacts to a second user. As another example, users might not want to reveal their interests to a social networking site. Furthermore, a sharing node may not want to reveal the files stored at the sharing node to a central index node and also a user searching for a desired file may not want to reveal the desired file to the central index node.